1. Technical Field
The present disclosure generally relates to processing of digital images.
2. Description of the Related Art
Computer-based digital image processing or editing applications may allow a user to adjust a digital image after the image has been captured or created. For example, an image editing application may be used to change the exposure of the image, to add highlights or shadows to the image, to crop an image, among other adjustments.
Such image editing applications typically present user interface controls for adjusting the image. Examples of such user interface controls include virtual buttons, graphical slider controls and text entry fields, among other controls. The controls may be used to change the values of various adjustable parameters of the digital image.
Many of these image-editing applications also present a preview image. The preview image is a version of the digital image that has been adjusted based on the current settings of the user interface controls. When the user changes the setting of one of the user interface controls, these image-editing applications update the preview image to reflect the settings change. By presenting a preview image which is updated as the user manipulates the user interface controls, the user can experiment with different changes to adjustable parameters and receive visual feedback on how the changes affect the digital image undergoing adjustment. The adjusted image may be output to a display, a printer, a file, etc.
A technique for applying the current settings of the user interface controls to a source image involves the image editing application processing a version of the digital image through an image filter chain in response to detecting user input that changes the value of an adjustable parameter. Generally, a filter chain is an ordered set or series of image filters. Each filter accepts as input a digital image and optionally accepts values for one or more adjustable parameters of that filter. Each filter produces a processed digital image as output. Each filter may process its input digital image differently to accomplish different image adjustments. For example, a first filter may adjust the color of its input image while a second filter may sharpen its input image while a third filter may crop its input image. The image that is output by a filter in the ordered set may be provided as input to the next filter in the ordered set. Thus, with a filter chain, a combination of multiple image adjustments may be applied to the digital image undergoing adjustment to produce an updated preview image.
Unfortunately, using a filter chain to update the preview image may result in a sub-optimal user experience. In particular, there may be a delay noticeable to the user after the user changes the setting of user interface controls for an adjustable parameter and before the preview image is updated to reflect the change or before an output image is sent to a printer or written to a file. This noticeable delay may be caused by the time needed to process the digital image undergoing adjustment through the filter chain. Such delay or other technical problems may be due to the memory requirements of implementing the filter chain, the processing requirements of implementing the filter chain, combinations thereof, or due to other factors, such as hardware limitations of the processor-based devices used to for the image processing tasks.
Further, as the number of adjustable parameters supported by the image editing application increases, the number of filters in the filter chain may also increase, adding to this delay. Further, users may want to edit images utilizing comparatively less powerful processor-based devices, such as tablet computers and smart phones. Because of this noticeable time lag, the user may become frustrated with an image editing application.